Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building Energy Standards Water Heater Data Update #1680

Merged
merged 18 commits into from
Apr 3, 2024

Conversation

leijerry888
Copy link
Collaborator

Updates have been made to the Building Energy Standards Data repository, see here. This pull request was automatically generated.

@lymereJ lymereJ changed the title Building Energy Standards Data Update Building Energy Standards Water Heater Data Update Jan 29, 2024
@lymereJ lymereJ marked this pull request as draft January 29, 2024 22:04
@lymereJ lymereJ marked this pull request as ready for review April 1, 2024 21:22
@lymereJ
Copy link
Collaborator

lymereJ commented Apr 1, 2024

All the non-NECB tests should now pass.

The DOE prototype performance tests and regression models had to be regenerated for the following reasons:

  • Currently the water heater efficiency requirement data in openstudio-standards does not vary by storage capacity but does in 90.1/IECC; Also 90.1/IECC does not include requirements for small storage water heaters the building-energy-standards-database includes entries for these cases based on the latest applicable Federal requirement (example); This created diffs for all applicable water heaters in the prototypes.
  • An error has been fixed when converting hourly losses to standby losses (see other review comment); This created diffs in some of the prototypes.
  • Currently, the water heater energy efficiency data in openstudio-standards for 90.1-2016/2019 does not includes UEF requirements; This PR does which also created diffs in some of the prototypes.
  • The current 90.1-2013 data use slightly different energy factor coefficients to determine the minimum efficiency requirements than what is published in the actual standard, and was not flagged in the errata. This also contributed to creating diffs in the regression/performance models.

Comment on lines -127 to +130
hrly_loss_pct = hr_loss_base + (hr_loss_allow / volume_gal) / 100.0
hrly_loss_pct = hr_loss_base + hr_loss_allow / volume_gal
# Convert to Btu/hr, assuming:
# Water at 120F, density = 8.25 lb/gal
# 1 Btu to raise 1 lb of water 1 F
# Therefore 8.25 Btu / gal of water * deg F
# 70F delta-T between water and zone
hrly_loss_btu_per_hr = hrly_loss_pct * volume_gal * 8.25 * 70
hrly_loss_btu_per_hr = (hrly_loss_pct / 100) * volume_gal * 8.25 * 70
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The / 100 should be applied to hrly_loss_pct, not just to hr_loss_allow, otherwise hr_loss_base gets ignored and hrly_loss_btu_per_hr are overestimated.

@@ -2423,6 +2426,48 @@ def model_find_objects(hash_of_objects, search_criteria, capacity = nil, date =
end
end

# If volume was specified, narrow down the matching objects
unless volume.nil?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider storage volume as a lookup key.

end

# If capacity_per_volume was specified, narrow down the matching objects
unless capacity_per_volume.nil?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider the ratio of capacity per volume as a lookup key.

Comment on lines +220 to +246
if wh_props_capacity.size == 1
wh_props = wh_props_capacity[0]
elsif wh_props_capacity_and_volume.size == 1
wh_props = wh_props_capacity_and_volume[0]
elsif wh_props_capacity_and_capacity_btu_per_hr == 1
wh_props = wh_props_capacity_and_capacity_btu_per_hr[0]
elsif wh_props_capacity_and_volume_and_capacity_per_volume == 1
wh_props = wh_props_capacity_and_volume_and_capacity_per_volume[0]
else
# Search again with additional criteria
search_criteria = water_heater_mixed_additional_search_criteria(water_heater_mixed, search_criteria)
wh_props_capacity = model_find_objects(standards_data['water_heaters'], search_criteria, capacity_btu_per_hr)
wh_props_capacity_and_volume = model_find_objects(standards_data['water_heaters'], search_criteria, capacity_btu_per_hr, nil, nil, nil, nil, volume_gal.round(0))
wh_props_capacity_and_capacity_btu_per_hr = model_find_objects(standards_data['water_heaters'], search_criteria, capacity_btu_per_hr, nil, nil, nil, nil, nil, capacity_btu_per_hr)
wh_props_capacity_and_volume_and_capacity_per_volume = model_find_objects(standards_data['water_heaters'], search_criteria, capacity_btu_per_hr, nil, nil, nil, nil, volume_gal, capacity_btu_per_hr / volume_gal)
if wh_props_capacity.size == 1
wh_props = wh_props_capacity[0]
elsif wh_props_capacity_and_volume.size == 1
wh_props = wh_props_capacity_and_volume[0]
elsif wh_props_capacity_and_capacity_btu_per_hr == 1
wh_props = wh_props_capacity_and_capacity_btu_per_hr[0]
elsif wh_props_capacity_and_volume_and_capacity_per_volume == 1
wh_props = wh_props_capacity_and_volume_and_capacity_per_volume[0]
else
return {}
end
end
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use a "stepped" approach to identify what the applicable requirement should be.

require_relative '../helpers/minitest_helper'

class TestSpaceType < Minitest::Test
def test_water_heater_efficiency_lookup
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add basic efficiency lookup test for water heater.

@lymereJ lymereJ requested a review from mdahlhausen April 1, 2024 21:36
@mdahlhausen mdahlhausen merged commit 67f99df into master Apr 3, 2024
0 of 2 checks passed
@mdahlhausen mdahlhausen deleted the data_update_0763744 branch April 3, 2024 05:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants